﻿$(document).ready(function () {
    $("#clientes").css("margin-top", "12%");
    $('.horario').mask('99:99');

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        selectable: true,
        selectHelper: false,
        editable: false,
        unselectAuto: false,
        slotDuration: '00:15:00',
        timezone: '',
        eventClick: function (calEvent, jsEvent, view) {
            $(this).css('border-color', 'red');

            EditarEvento(calEvent);
        },
        select: function (start, end) {
            start = start;
            end = end;
            mostrarModal(start, end);
            var title = 'Em agendamento...';
            var eventData;
            if (title) {
                eventData = {
                    //id: 1,
                    title: title,
                    start: start,
                    end: end,
                    editable: true
                };
                $('#calendar').fullCalendar('renderEvent', eventData, true);
            }
            $('#calendar').fullCalendar('unselect');
        },
        axisFormat: 'hh:mm',
        eventRender: function (event, element) {
            if (event.compareceu)
                element.find(".fc-content").after($("<span class=\"fc-event-icons\"></span>").append("<div style='background-image: url(/images/check_16.png); width: 16px; height: 16px; position:absolute;right:1px; top: 1px'></div>"));
        }
    });

    CarregarAgendamentos();
    $('#clientes').hide();
});

var eventoEditar;
function EditarEvento(e) {
    mostrarModalEdit();
    $('.pacienteSelect').val(e.id_cliente);
    $('.dentistaSelect').val(e.id_funcionario);
    $('#compareceu').prop('checked', e.compareceu);
    $('#inicio').val(formatarHoraMinutoStart(e));
    $('#termino').val(formatarHoraMinutoEnd(e));
    eventoEditar = e;
}

function mostrarModalEdit() {
    $('#clientes').modal({ backdrop: 'static' });
}

function mostrarModal(start, end) {
    $('#clientes').modal({ backdrop: 'static' });
    $('#inicio').val((start.get('hour').toString().length === 1 ? "0" + start.get('hour') : start.get('hour')) + ":" + (start.get('minutes').toString().length === 1 ? "0" + start.get('minutes') : start.get('minutes')));
    $('#termino').val((end.get('hour').toString().length === 1 ? "0" + end.get('hour') : end.get('hour')) + ":" + (end.get('minutes').toString().length === 1 ? "0" + end.get('minutes') : end.get('minutes')));
}

function Cancelar() {
    $('.indexRestart').each(function () {
        $(this).val(-1);
    });
    $('#compareceu').prop('checked', false);
    cancelarUltimoEvento();
    $("#clientes").modal('toggle');
    eventoEditar = undefined;
}

var start;
var end;
function Confirmar() {
    var evento;

    if (eventoEditar === undefined)
        evento = getLastEvento();
    else
        evento = eventoEditar;

    evento.title = $('.pacienteSelect option:selected').text() + '\n\n' + $('.dentistaSelect option:selected').text();
    evento.paciente = $('.pacienteSelect option:selected').text();
    evento.dentista = $('.dentistaSelect option:selected').text();

    var agendamento = {};
    agendamento.data = $.datepicker.formatDate('mm-dd-yy', evento.start._d);

    agendamento.horario = $('#inicio').val();//evento.start.get('hour').toString().length === 1 ? "0" + evento.start.get('hour') : evento.start.get('hour');
    //agendamento.horario += ":" + (evento.start.get('minutes').toString().length === 1 ? "0" + evento.start.get('minutes') : evento.start.get('minutes'));

    agendamento.termino = $('#termino').val();//evento.end.get('hour').toString().length === 1 ? "0" + evento.end.get('hour') : evento.end.get('hour');
    //agendamento.termino += ":" + (evento.end.get('minutes').toString().length === 1 ? "0" + evento.end.get('minutes') : evento.end.get('minutes'));

    agendamento.idCliente = $('.pacienteSelect').val();
    agendamento.nomeCliente = $('.pacienteSelect option:selected').text();

    agendamento.idFuncionario = $('.dentistaSelect').val();
    agendamento.nomeFuncionario = $('.dentistaSelect option:selected').text();

    agendamento.id_cliente = $('.pacienteSelect').val();
    agendamento.nome_cliente = $('.pacienteSelect option:selected').text();

    agendamento.id_funcionario = $('.dentistaSelect').val();
    agendamento.nome_funcionario = $('.dentistaSelect option:selected').text();

    agendamento.compareceu = $('#compareceu').is(':checked');
    agendamento.Compareceu = $('#compareceu').is(':checked');

    if (eventoEditar === undefined) {
        $.ajax({
            type: 'POST',
            url: 'Agendamento.aspx/Insert',
            data: JSON.stringify({ 'obj': (JSON.stringify(agendamento)) }),
            dataType: 'json',
            async: false,
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                dd = data.d;
                agendamento.id_agenda = (JSON.parse(data.d)).Id_agenda;
                MontarAgendamento(agendamento);
            },
            error: function (err) {
                cancelarUltimoEvento();
            }
        });
    }
    else
    {
        agendamento.id_agenda = evento.id_agenda;
        agendamento.Id_agenda = evento.id_agenda;

        $.ajax({
            type: 'POST',
            url: 'Agendamento.aspx/Edit',
            data: JSON.stringify({ 'obj': (JSON.stringify(agendamento)) }),
            dataType: 'json',
            async: false,
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                dd = data.d;
                agendamento.id_agenda = (JSON.parse(data.d)).Id_agenda;
                MontarAgendamento(agendamento);
            },
            error: function (err) {
                cancelarUltimoEvento();
            }
        });
    }

    $("#clientes").modal('toggle');

    $('.indexRestart').each(function () {
        $(this).val(-1);
    });
    $('#compareceu').prop('checked', false);
    eventoEditar = undefined;
}
var dd;
function MontarAgendamento(obj) {
    getLastEvento().dentista = obj.nome_funcionario;
    getLastEvento().idCliente = obj.id_cliente;
    getLastEvento().id_cliente = obj.id_cliente;
    getLastEvento().nomeCliente = obj.nome_cliente;
    getLastEvento().nome_cliente = obj.nome_cliente;
    getLastEvento().idFuncionario = obj.id_funcionario;
    getLastEvento().id_funcionario = obj.id_funcionario;
    getLastEvento().nomeFuncionario = obj.nome_funcionario;
    getLastEvento().nome_funcionario = obj.nome_funcionario;
    getLastEvento().compareceu = obj.compareceu;
    getLastEvento().Compareceu = obj.compareceu;
    getLastEvento().id_agenda = obj.id_agenda;
    $('#calendar').fullCalendar('renderEvent', getLastEvento());
}

function getEventos() {
    return $('#calendar').fullCalendar('clientEvents');
}

function cancelarUltimoEvento() {
    if (getLastEvento() !== undefined)
        $('#calendar').fullCalendar('removeEvents', getLastEvento()._id);
}

function cancelarEvento(evento) {
    if (evento !== undefined)
        $('#calendar').fullCalendar('removeEvents', evento._id);
}

function getLastEvento() {
    return getEventos()[getEventos().length - 1];
}

var agendamentos = {};
function CarregarAgendamentos() {
    $.ajax({
        type: 'POST',
        url: 'Agendamento.aspx/GetAllAgendamentos',
        dataType: 'json',
        async: false,
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            agendamentos = JSON.parse(data.d);
            MontarAgendamentos();
        }
    });
}

function MontarAgendamentos() {
    var myCalendar = $('#calendar');
    myCalendar.fullCalendar();

    agendamentos.forEach(function (obj) {
        var myEvent = {
            title: obj.nome_cliente + "\n\n" + obj.nome_funcionario,
            dentista: obj.nome_funcionario,
            data: obj.data,
            start: new Date(ConvertDateFormat(obj.data) + ' ' + obj.horario),
            end: new Date(ConvertDateFormat(obj.data) + ' ' + obj.termino),
            idCliente: obj.id_cliente,
            id_cliente: obj.id_cliente,
            nomeCliente: obj.nome_cliente,
            nome_cliente: obj.nome_cliente,
            idFuncionario: obj.id_funcionario,
            id_funcionario: obj.id_funcionario,
            nomeFuncionario: obj.nome_funcionario,
            nome_funcionario: obj.nome_funcionario,
            compareceu: obj.compareceu,
            Compareceu: obj.compareceu,
            id_agenda: obj.id_agenda
        };
        myCalendar.fullCalendar('renderEvent', myEvent);
    });
}

function ConvertDateFormat(format) {
    var split = format.split('/');
    return split[1] + '/' + split[0] + '/' + split[2];
}

function formatarHoraStart(evento) {
    return evento.start.get('hour').toString().length === 1 ? "0" + evento.start.get('hour') : evento.start.get('hour');
}

function formatarMinutoStart(evento) {
    return (evento.start.get('minutes').toString().length === 1 ? "0" + evento.start.get('minutes') : evento.start.get('minutes'));
}

function formatarHoraEnd(evento) {
    return evento.end.get('hour').toString().length === 1 ? "0" + evento.end.get('hour') : evento.end.get('hour');
}

function formatarMinutoEnd(evento) {
    return (evento.end.get('minutes').toString().length === 1 ? "0" + evento.end.get('minutes') : evento.end.get('minutes'));
}

function formatarHoraMinutoStart(evento) {
    return formatarHoraStart(evento) + ':' + formatarMinutoStart(evento);
}

function formatarHoraMinutoEnd(evento) {
    return formatarHoraEnd(evento) + ':' + formatarMinutoEnd(evento);
}

function Remover() {
}